﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using VentaElectrodomesticos.Negocio;
using VentaElectrodomesticos.Contrato;
using VentaElectrodomesticos.Datos.Dto;
using VentaElectrodomesticos.Datos;
using VentaElectrodomesticos.GUI.Base;

namespace VentaElectrodomesticos.MejoresCategorias
{
    public partial class FormMejoresCategorias : BaseValidaciones
    {
        private static FormMejoresCategorias instance;

        public FormMejoresCategorias()
        {
            InitializeComponent();

            this.cbSucursales.DisplayMember = "Direccion";
            this.cbSucursales.ValueMember = "Id";
            this.cbSucursales.DataSource = new SucursalNegocio().getAll();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.doFilter();
        }

        protected override void doFilter()
        {
            this.setList(new CategoriaNegocio().getMejoresCategorias(long.Parse(this.cbSucursales.SelectedValue.ToString()), numYear.Value));
        }

        private void setList(List<MejorCategoriaDTO> list)
        {
            BindingSource bindingSource = new BindingSource();
            bindingSource.DataSource = list;
            this.dgvResultados.DataSource = bindingSource;
            this.dgvResultados.Columns["NombreCategoria"].HeaderText = "Nombre categoria";
            this.dgvResultados.Columns["CantidadSubCategorias"].HeaderText = "Cantidad subcategorias";
            this.dgvResultados.Columns["MontoTotalCategoria"].HeaderText = "Monto total categoria";
            this.dgvResultados.Columns["IdProductoMaximoMonto"].HeaderText = "Codigo producto max monto";
            this.dgvResultados.Columns["NombreProductoMaximoMonto"].HeaderText = "Nombre producto max monto";
            this.dgvResultados.Columns["MontoProductoMaximoMonto"].HeaderText = "Monto max del producto";
            this.dgvResultados.Columns["IdProductoMaximaCantidad"].HeaderText = "Codigo producto max cantidad";
            this.dgvResultados.Columns["NombreProductoMaximaCantidad"].HeaderText = "Nombre producto max cantidad";
            this.dgvResultados.Columns["IdProductoMaximoPrecio"].HeaderText = "Codigo producto max precio";
            this.dgvResultados.Columns["NombreProductoMaximoPrecio"].HeaderText = "Nombre producto max precio";
            this.dgvResultados.Columns["PrecioProductoMaximoPrecio"].HeaderText = "Precio max producto";
            this.dgvResultados.Columns["NombreMejorVendedor"].HeaderText = "Nombre mejor vendendor";
            this.dgvResultados.Columns["ApellidoMejorVendedor"].HeaderText = "Apellido mejor vendendor";
        }

        internal static FormMejoresCategorias getInstance()
        {
            if (instance == null)
                instance = new FormMejoresCategorias();
            return instance;
        }

        private void FormMejoresCategorias_FormClosing(object sender, FormClosingEventArgs e)
        {
            instance = null;
        }

        protected override void cumpleValidaciones()
        {
            if (cbSucursales.SelectedIndex == -1)
                this.Errores.Add("No ha seleccionado ninguna sucursal");
        }
    }
}
